package com.ybkj.o2o.mc.manager;


import com.ybkj.o2o.mc.common.DataGrid;
import com.ybkj.o2o.mc.common.transport.PassengerAddressResult;
import com.ybkj.o2o.mc.entity.PassengerAddress;

import java.util.List;

/**
 * Created by shine on 15/8/19.
 */
public interface PassengerAddressManager {

  /**
   * 根据目的地,类型,乘客Id判断是否存在.
   *
   * @param address     地址名称
   * @param type        地址类型
   * @param passengerId 乘客主键
   * @return true存在, false不存在
   */
  boolean exists(String address, Integer type, Long passengerId);

  /**
   * 保存乘客常用目的地信息.
   *
   * @param passengerAddress 常用目的地信息
   * @return 常用目的地信息
   */
  PassengerAddress insert(PassengerAddress passengerAddress);

  /**
   * 根据主键,乘客Id删除乘客常用目的地.
   *
   * @param addressId   地址主键
   * @param passengerId 乘客主键
   * @return 受影响行数
   */
  int delete(Long addressId, Long passengerId);

  /**
   * 根据主键查询乘客的常用目的地.
   *
   * @param addressId   地址主键
   * @param passengerId 乘客主键
   * @return 常用目的地信息
   */
  PassengerAddress find(Long addressId, Long passengerId);

  /**
   * 根据主键与乘客主键修改乘客的常用目的地.
   *
   * @param address 常用目的地信息
   * @return 受影响行数
   */
  int update(PassengerAddress address);

  /**
   * 根据乘客主键与类型查询乘客常用目的地.
   *
   * @param passengerId 乘客主键
   * @param type        类型
   * @return 常用目的地信息
   */
  PassengerAddress findByPassengerAndType(Long passengerId, Integer type);

  /**
   * 查询乘客所有常用目的地.
   *
   * @param passengerId 乘客主键
   * @return 常用目的地信息
   */
  List<PassengerAddress> findByPassenger(Long passengerId);

  /**
   * 根据乘客主键分页查询常用目的地信息.
   *
   * @param passengerId 乘客主键
   * @param page        页码
   * @param rows        每页显示数量
   */
  DataGrid<PassengerAddressResult> findByPassengerForPage(Long passengerId, int page, int rows);

}
